<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <!-- 引入 lib 目录下的 bootstrap 样式表 -->
    <link rel="stylesheet" href="./lib/bootstrap-v4.6.0.css" />
    <style>
      :root {
        font-size: 15px;
      }

      body {
        padding-top: 15px;
      }
    </style>
  </head>

  <body>
    <!-- 栅格系统 -->
    <div class="container-fluid">
      <!-- 栅格系统中的一行 -->
      <div class="row">
        <!-- 左侧的表格，占了 8 列 -->
        <div class="col-sm-8">
          <table
            class="
              table table-bordered table-striped table-dark table-hover
              text-center
            "
          >
            <thead>
              <!-- 表头行 -->
              <tr>
                <th scope="col">Id</th>
                <th scope="col">书名</th>
                <th scope="col">作者</th>
                <th scope="col">出版社</th>
                <th scope="col">操作</th>
              </tr>
            </thead>
            <tbody>
              <!-- 表格中的每一行 -->
              <!-- <tr>
              <th scope="row">xxx</th>
              <td>xxx</td>
              <td>xxx</td>
              <td>xxx</td>
              <td>
                <button type="button" class="btn btn-link btn-sm">删除</button>
              </td>
            </tr> -->
            </tbody>
          </table>
        </div>

        <!-- 右侧的添加区域，占了 4 列 -->
        <div class="col-sm-4">
          <!-- 添加图书的卡片 -->
          <div class="card text-white bg-secondary sticky-top">
            <div class="card-header">添加新图书</div>
            <form class="card-body bg-light" id="addForm">
              <!-- 书名 -->
              <div class="input-group mb-3">
                <div class="input-group-prepend">
                  <span class="input-group-text">书名</span>
                </div>
                <input
                  type="text"
                  class="form-control"
                  placeholder="请输入图书名称"
                  name="bookname"
                />
              </div>
              <!-- 作者 -->
              <div class="input-group mb-3">
                <div class="input-group-prepend">
                  <span class="input-group-text">作者</span>
                </div>
                <input
                  type="text"
                  class="form-control"
                  placeholder="请输入作者名字"
                  name="author"
                />
              </div>
              <!-- 出版社 -->
              <div class="input-group mb-3">
                <div class="input-group-prepend">
                  <span class="input-group-text">出版社</span>
                </div>
                <input
                  type="text"
                  class="form-control"
                  placeholder="请输入出版社名称"
                  name="publisher"
                />
              </div>
              <!-- 添加按钮 -->
              <button class="btn btn-dark" type="submit">添加</button>
            </form>
          </div>
        </div>
      </div>
    </div>

    <!-- 引入 lib 目录下的 jQuery 和 axios -->
    <script src="./lib/jquery-v3.6.0.js"></script>
    <script src="./lib/axios.js"></script>
    <script>
      $(function () {
        //请求数据
        axios.defaults.baseURL = 'http://www.liulongbin.top:3006'; //这个是配置默认的根路径
        initBookList();
        function initBookList() {
          axios.get('/api/getbooks').then(({ data: res }) => {
            let data11 = res.data.map(
              item => `<tr>
              <th scope="row">${item.id}</th>
              <td>${item.bookname}/td>
              <td>${item.author}</td>
              <td>${item.publisher}</td>
              <td>
                <button type="button" class="btn btn-link btn-sm" data-id='${item.id}'>删除</button>
              </td>
            </tr>`,
            );

            // 数据已经获取出来了，现在需要将这些数据显示在页面上
            $('tbody').html(data11);
            // 如果每次都是添加到父级的最后面
            // $('tbody').prepend(data11);
          });
        }
        //监听表单的默认提交事件，因为是表单在默认提交。所以要监听的是整个form表单
        $('#addForm').on('submit', function (e) {
          e.preventDefault();
          axios({
            method: 'post',
            url: '/api/addbook',
            data: $('#addForm').serialize(),
          }).then(({ data: res }) => {
            if (res.status === 201) {
              //表示添加成功
              initBookList(); //拉取数据
              this.reset(); //这个reset是form表单的方法//这个箭头函数里面能够用this是因为这个this指向的是form，而刚好需要form
            } else {
              alert(res.msg);
            }
          });
        });
        $('tbody').on('click', '.btn-link', function () {
          //用的是事件委托，因为这个是动态添加的数据，所以要删除的时候如果固定的就获取不到动态参数，所以需要用事件委托
          if (confirm('是否要删除该图书')) {
            let id = $(this).attr('data-id'); //获取要删除的图书的id

            axios
              .delete('/api/delbook', { params: { id } })
              .then(({ data }) => {
                if (data.status === 200) {
                  initBookList();
                  // $(this).parent().parent().remove();
                  alert('删除成功');
                } else {
                  alert(data.msg);
                }
              });
          }
        });
      });
    </script>
  </body>
</html>
